package util;

public class Token extends KelimeTr {
//	private KelimeTr content;
	private Token oncekiHali=null; // former
	private Token sonrakiHali=null; // latter

	public Token(Token oncekiHali, Token sonrakiHali) {
		super();
		this.oncekiHali = oncekiHali;
		this.sonrakiHali = sonrakiHali;
	}
	public Token(String str) {
		super(str);
		
	}
	public Token() {
		super();
	}
	// TODO Kelimenin hangi harflerinde yumusama-Sertleşme !! TODO GEREK KALMADI 
	// olduğunu tesbit eden bir index oluşturur.
	
	public void calcYumusamaIndexleri() {
		int klmUznlk=0;
		HarfTr currentHrf=new HarfTr ();
		HarfTr nextHrf=new HarfTr ();
		klmUznlk=getLength();
		
		int ndx=0;
		// Tüm kelimeyi tarayıp yumuşamaları bir indeks atar index=1 den başlar
		for (int i=0;i<klmUznlk-1;i++){
			currentHrf=getHarfTrByIndx(i);
			nextHrf=getHarfTrByIndx(i+1);
			if(currentHrf.isYumusakSureksizSessiz()&& nextHrf.isSesli() ){
			}
		}
	}
	public void setOncekiHali(String content) {
		// 
		
		this.oncekiHali=new Token(content);
	}
	public void setOncekiHali(Token aToken) {
		// 
		
		this.oncekiHali=aToken;
	}
	 /**
     * <p>Token önceki hali <code>String</code> olarak getirilir.
     * </p>
     * 
     * @return  String
     * @throws NullPointerException if oncekiHali value is null
     * */
	public String getOncekiHali() {
		
		return oncekiHali.getContent();		
	}
	 /**
     * <p>Token'ın önceki hali <code>Token</code> olarak getirilir.
     * </p>
     * 
     * @return  Token
     * @throws  NullPointerException if oncekiHali value is null
     * */
	public Token getOncekiHaliByToken() {
		
		return oncekiHali;		
	}

	 /**
     * <p>inserts a character with <code>shiftInsert</code> function given <code>aHarfTr</code> starting after<code> index</code>.
     * </p>
     * <pre>Token.content="ilgili"    shiftInsert( 1, "i") returns "iligili"</pre>
     *
     * @param aHarf          : character to insert.
     * @param index       	 : index of the character position
     * 
     * @return the character inserted  string. null, if <code>str</code> is null
     * @throws IllegalArgumentException if <code>index</code> is negative
     */	
	//Token shift ederek harf eklenir.
	public void shiftInsert(int index, HarfTr aHarf) {

		HarfTr[] copy =new HarfTr[this.getLength()+1];int i=0;

		for(HarfTr hrf: contentHrf){
			if (i==index){
				copy[i++]=hrf;
				copy[i++]=aHarf;			
			}else {
				copy[i++]=hrf;
			}
		}
		this.setOncekiHali(this.getContent());
		this.contentHrf=copy;		
		copyContentHrf2Content();		
	}
	/**  
	 * Gets sub string before part of index on Token
	 * <p>
	 * <pre> Token.content = "iligili"   <code>subStringBeforeIndex(5)  </code> return "iligi" </pre>
	 * index is start from 0,1,2,3,..
	 * @param index    : index of character positin
	 * @return string  : first part of string that before the index
	 */
	public String subStringBeforeIndex(int index) {
		return content.substring(0, index);
				
	}

	// "contentHrf" içeriği "content"  kopyalar

}
	




